package cn.com.cetccst.vpn.verdor;

import android.content.Context;

import java.util.List;

import cn.com.cetccst.vpn.callback.ICommonCallback;
import cn.com.cetccst.vpn.callback.IGetAdServerCallback;
import cn.com.cetccst.vpn.callback.ILoginCallback;
import cn.com.cetccst.vpn.callback.IServerStatusCallback;
import cn.com.cetccst.vpn.callback.IVpnEventCallback;

public interface IVpn {

    int init(Context context);

    void prepare();

    void setLoginCallback(ILoginCallback loginCallback);

    void setVpnEventCallback(IVpnEventCallback eventCallback);

    void setServerStatusCallback(IServerStatusCallback serverStatusCallback);

    void setServerInfo(String addr, int port, String alias);

    void setPinCode(String pinCode);

    void loginByUserName(String userName, String pwd);

    void loginByCert(String pin);

    void loginByAd(String server, String userName, String pwd);

    void loginIpsec(String pin);

    void loginUas(String userName, String pwd);

    void logout();

    void changeUserPwd(String userName, String oldPwd, String newPwd, ICommonCallback callback);

    void changePinPwd(String oldPwd, String newPwd, ICommonCallback callback);

    void enableWhiteListApp(boolean enable);

    void setWhiteAppList(List<String> packages);

    void setInternetWhiteApp(String packageName);

    void getAdServer(IGetAdServerCallback callback);

    List<String> getWhiteAppList();

    String getRunLogPath();

    int getEventStatus();

    int getServerStatus();

    void updateServerInfo(String addr, int port, String alias);

    public boolean isVPNAlreadyLogin();
}
